home *** CD-ROM | disk | FTP | other *** search
- // This is an example of a progress bar.
- //
- // Modified THERMO.ZIP in the C++ lib to work with TURBO VISION
- // and fixed a small bug.
- //
- // Author: Jay Perez.
-
- #define Uses_TBackground
- #define Uses_TListBox
- #define Uses_TMenu
- #define Uses_TMenuBar
- #define Uses_TMenuItem
- #define Uses_TScrollBar
- #define Uses_TStaticText
- #define Uses_TStatusDef
- #define Uses_TStatusItem
- #define Uses_TStatusLine
- #define Uses_TStringCollection
- #define Uses_MsgBox
- #define Uses_TEventQueue
- #define Uses_TApplication
- #define Uses_TRect
- #define Uses_TDeskTop
- #define Uses_TView
- #define Uses_TWindow
- #define Uses_TDialog
- #define Uses_TButton
- #define Uses_StaticText
- #define Uses_TSItem
- #define Uses_TLabel
- #define Uses_TInputLine
- #define Uses_TEvent
- #define Uses_TKeys
- #define Uses_TDrawBuffer
- #define Uses_TStreamableClass
- #define Uses_TStreamable
-
- #include <tv.h>
- __link( RView )
- __link( RDialog )
- __link( RButton )
- #include <mem.h> // memset
-
- #include <dos.h>
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <strstrea.h>
- #include <iomanip.h>
- #include <conio.h>
-
- #include "tprogbar.h"
-
- const int sampleIterations = 21 ;
-
- const cmAboutCmd = 100; // User selected menu item 'About'
- const cmStatusCmd = 101; // User selected menu item 'Progress Bar'
-
-
- //========================================================================
-
- class myProgress : public TProgressBar
- {
- public :
- myProgress(TRect& r, unsigned long iters ) :
- TProgressBar( r , iters ){};
- virtual void mainProcess( void );
- };
-
- myProgress *bar ;
-
- //========================================================================
-
- class TMyApplication : public TApplication
- {
- public:
- TMyApplication();
- static TMenuBar *initMenuBar(TRect);
- void handleEvent(TEvent &);
- private:
- void aboutDlg();
- void statusDlg();
- };
-
- //========================================================================
-
- TMyApplication::TMyApplication() :
- TProgInit(&TApplication::initStatusLine,&TMyApplication::initMenuBar,
- &TApplication::initDeskTop)
- {
- }
-
- //========================================================================
-
- TMenuBar *TMyApplication::initMenuBar(TRect bounds)
- {
- bounds.b.y = bounds.a.y + 1;
- return(new TMenuBar(bounds,
- new TMenu(
- *new TMenuItem("~A~bout",cmAboutCmd,kbAltA,hcNoContext,0,
- new TMenuItem("~P~rogress Bar",cmStatusCmd,kbAltL,hcNoContext,0)))));
- }
-
- //========================================================================
-
- void TMyApplication::handleEvent(TEvent &event)
- {
- TApplication::handleEvent(event);
-
- if (event.what == evCommand)
- {
- switch (event.message.command)
- {
- case cmAboutCmd:
- {
- aboutDlg();
- clearEvent(event);
- break;
- }
- case cmStatusCmd:
- {
- statusDlg();
- clearEvent(event);
- break;
- }
- }
- }
- }
-
- //========================================================================
-
- void TMyApplication::aboutDlg()
- {
- TDialog *pd = new TDialog(TRect(0,0,35,12),"About");
- if (pd)
- {
- pd->options |= ofCentered;
- pd->insert(new TStaticText(TRect(1,2,34,7),
- "\003Turbo Vision Example\n\003\n"
- "\003Creating a Progress Bar\n\003\n"));
- pd->insert(new TButton(TRect(3,9,32,11),"~O~k",cmOK,bfDefault));
-
- if (validView(pd) != 0)
- {
- deskTop->execView(pd);
-
- destroy(pd);
- }
- }
- }
-
- //========================================================================
-
- void TMyApplication::statusDlg()
- {
- TView *tv;
-
- TDialog *pd = new TDialog( TRect( 10, 3, 69, 11 ), "Please Wait" ) ;
- if (pd) {
-
- pd->options |= ofFirstClick;
- pd->options |= ofCentered;
-
- TRect r = TRect(4,4,25,6) ;
- tv = new TButton(r, "~S~tart", cmOK, bfNormal | bfBroadcast ) ;
- tv->options &= ~ofSelectable;
- pd->insert( tv );
-
- r = TRect(34,4,55,6) ;
- tv = new TButton( r, "~C~ancel", cmCancel, bfNormal);
- pd->insert( tv );
-
- bar = new myProgress( TRect( 4, 2, 55, 3 ), 0 ) ;
-
- pd->insert( ( TView * ) bar ) ;
-
- if( TProgram::application->validView( pd ) != 0 ) { // If it's valid...
- TProgram::deskTop->execView( pd ) ;
- TObject::destroy( pd ) ;
- }
- }
- return ;
- }
-
- //========================================================================
-
- int main(void)
- {
- TMyApplication myApplication;
-
- myApplication.run();
-
- return 0;
- }
-
- //========================================================================
-
- void myProgress::mainProcess( void )
- {
-
- // Place your processing logic here...
-
- unsigned long cnt = 0 ;
-
- setMaxIter( sampleIterations ) ; // set maximum number of iterations...
- // do it here or on the constructor ...
- // or both.
-
- for( int x = 0; x < sampleIterations; x++ )
- {
- setCurIter( ++cnt ); // set the current iteration count & update
- delay(500);
- }
-
- delay(500);
- message(owner,evCommand,cmOK,this);// close dialog box
- }
-
- //========================================================================
-